package com.data.bobostructure.chapter1;


import com.data.bobostructure.entity.Student;
import com.data.bobostructure.utils.SortUtils;

/**  选择排序
 * Created by wangbing on 2018/3/13.
 */
// 在选择排序中加入泛型,可以排序对象和一般基本类型

public class SelectionSort02 {
    private SelectionSort02() {
    }

    //    传入数组，和数组的个数
//先选择一个最小的数和第一个数字交换
    private static void sort(Comparable[] arr){
         int n = arr.length;
        for (int i=0;i<n;i++){
//            寻找[i,n)区间的最小值
            int minIndex = i;
            for(int j=i+1;j<n;j++){
                if(arr[j].compareTo(arr[minIndex])>0){
//                   确定小值的位置
                    minIndex=j;
                }
//                交换元素位置
                swap(arr,j,minIndex);
            }

        }

    }
    private static void swap(Object[] arr,int i,int j){
        Object t = arr[i];
        arr[i] = arr[j];
        arr[j] = t;

    }
    public static void main(String[] args) {


//        比较实现了Comparable接口的类
        Student[] stu = {
                new Student("wang",89,19),
                new Student("bing",69,122),
                new Student("li",78,29),
                new Student("wan",92,20)
        };
        sort(stu);
        SortUtils.printArr(stu);


//        比较一般数据类型
        Double[] d = {1.2,34.0,9.55,3.44,12.3};
        sort(d);
        SortUtils.printArr(d);

//        比较字符串
        String [] s = {"wq","ew","q","io"};
        sort(s);
        SortUtils.printArr(s);

    }

}

